import os, sys
import numpy as np

class DCDS_Mask_44S:
    def __init__(self):
        # masks for different number of pairs of sampples (reference/signal)
        self.npairs = [39, 41]


        #self.mask39 = np.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                                #0, 0, 0, 0, 0, 1, 1, 1, 1, 1,
                                #1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
                                #1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
                                #1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
                                #1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
                                #0, 0, 0, 0,-1,-1,-1,-1,-1,-1,
                               #-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
                               #-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
                               #-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
                               #-1,-1,-1, 0, 0, 0, 0, 0 ],
                                #dtype=np.int)

        #self.mask41 = np.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                                #0, 0, 0, 1, 1, 1, 1, 1, 1, 1,
                                #1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
                                #1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
                                #1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
                                #1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
                                #0, 0,-1,-1,-1,-1,-1,-1,-1,-1,
                               #-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
                               #-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
                               #-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
                               #-1,-1,-1, 0, 0, 0, 0, 0 ],
                                #dtype=np.int)

        self.mask39 = np.array([0, 0, 0, 0, 0, 0, 0,
                                0, 0, 0, 0, 0, 1, 1, 1, 1, 1,
                                1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
                                1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
                                1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
                                1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
                                0, 0, 0, 0,-1,-1,-1,-1,-1,-1,
                               -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
                               -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
                               -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
                               -1,-1,-1, 0, 0, 0, 0, 0,
                                0, 0, 0, ],
                                dtype=np.int)

        self.mask41 = np.array([0, 0, 0, 0, 0, 0, 0,
                                0, 0, 0, 1, 1, 1, 1, 1, 1, 1,
                                1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
                                1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
                                1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
                                1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
                                0, 0,-1,-1,-1,-1,-1,-1,-1,-1,
                               -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
                               -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
                               -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
                               -1,-1,-1, 0, 0, 0, 0, 0,
                                0, 0, 0, ],
                                dtype=np.int)

    def gen_mask(self, npairs):
        flag = npairs in self.npairs
        if flag is False:
            print('user provided npairs does not inclued in allowed range : {}'.format(self.npairs))
            sys.exit(0)
        if npairs == 39:
            return self.mask39
        elif npairs == 41:
            return self.mask41
        else:
            print('###> cannot generate mask for npaire = {}'.format(npairs))
            return None


###################################################################################################
if __name__ == '__main__':
    mask = DCDS_Mask_44S()
    mask37 = mask.gen_mask(39)
    print('mask37 is {}'.format(mask39))

